use std::collections::HashSet;
fn main() {
    let mut a = vec!(1i32, 2, 3).into_iter().collect::<HashSet<i32>>();
    let mut b:HashSet<i32> = HashSet::new();
    assert!(a.insert(4));
    assert!(a.contains(&4));
    b.insert(2i32);
    b.insert(3);
    assert_eq!(a.len(), 4); //长度
    assert_eq!(a.intersection(&b).count(), 2); //交集
//     若一个集合(collection)的元素类型实现了`Debug`,
//     则该集合也实现了`Debug`
    b.insert(5);
    println!("Collection a: {:?}", a);
    println!("Collection b:{:?}", b);
    println!("乱序集合的并集: {:?}", a.union(&b).collect::<Vec<&i32>>()); //并集
    println!("乱序集合的差集: {:?}", a.difference(&b).collect::<Vec<&i32>>()); //差集
    println!("乱序集合的交集: {:?}", a.intersection(&b).collect::<HashSet<&i32>>()); //交集
    println!("乱序集合的对称差: {:?}", a.symmetric_difference(&b).collect::<HashSet<&i32>>()); //对称差

}
